package hevs.eServices.client;

import hevs.eServices.client.object.Data;
import hevs.eServices.client.object.Item;
import hevs.eServices.client.object.Meter;
import hevs.eServices.client.object.Property;

import java.util.ArrayList;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface MySQLQueryServiceAsync {
	
	void testQuery(String input, AsyncCallback<ArrayList<Data>> callback) throws IllegalArgumentException;
	
	void getDateLimit(AsyncCallback<ArrayList<String>> callback);
	
	void getDaySum(String startDate, String endDate, AsyncCallback<Integer> callback);

	void getItem(int idItem, AsyncCallback<Item> callback);
	
	void getFullItem(int idItem, AsyncCallback<Item> callback);

	void getListMeter(int idItem, AsyncCallback<ArrayList<Meter>> callback);

	void getFullListMeter(int idItem, AsyncCallback<ArrayList<Meter>> callback);

	void getListProperty(int idMeter, AsyncCallback<ArrayList<Property>> callback);

	void getFullListProperty(int idMeter, AsyncCallback<ArrayList<Property>> callback);

	void getListItem(AsyncCallback<ArrayList<Item>> callback);

	void getFullListItem(AsyncCallback<ArrayList<Item>> callback);
	
	void getMeter(int idMeter, AsyncCallback<Meter> callback);

	void getFullMeter(int idMeter, AsyncCallback<Meter> callback);

	void getListDataByHour(int idMeter, String startDate, String endDate, AsyncCallback<ArrayList<Data>> callback);

	void getListDataByDay(int idMeter, String startDate, String endDate, AsyncCallback<ArrayList<Data>> callback);

	void getListDataByWeek(int idMeter, String startDate, String endDate, AsyncCallback<ArrayList<Data>> callback);
	
	void getListDataByMonth(int idMeter, String startDate, String endDate, AsyncCallback<ArrayList<Data>> callback);

	void getDateLimit(int idMeter, AsyncCallback<ArrayList<String>> callback);

}
